{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CS245: Principles of Programming Languages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bryn Mawr College, Fall 2014" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "An introduction to a wide range of topics relating to programming languages with an emphasis on abstraction and design. Design issues relevant to the implementation of programming languages are discussed, including a review and in-depth treatment of mechanisms for sequence control, the run-time structure of programming languages and programming in the large. The course has a strong lab component where students get to construct large programs in at least three different imperative programming languages.\n", "\n", "### General information:\n", "\n", "**Course website**: http://cs.brynmawr.edu/cs245
\n", "**Class**: Monday and Wednesdays, 2:40pm-4:00pm, Park Science Building, Room 336
\n", "**Lab**: Thursdays 10:10am-12:00pm, Park Science Building, Room 230
\n", "**Professor**: Douglas Blank, http://cs.brynmawr.edu/~dblank/
\n", "**Email**: dblank@cs.brynmawr.edu
\n", "**Office**: Park Science, Room 248
\n", "**Office phone**: (610)526-6501
\n", "**Office hours**: TBA
\n", "**Course Management System**: https://moodle.brynmawr.edu/course/view.php?id=3232 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the following resources for this course:\n", "\n", "1. Jupyter on Athena at Bryn Mawr College, https://athena.brynmawr.edu\n", "1. _The Scheme Programming Language_, fourth edition, by Kent Dybvig. Also available [online](http://www.scheme.com/tspl4/).\n", "1. Handouts and outside readings that will be distributed in class and through Moodle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Schedule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n",
    "     September              October               November              December        \n",
    "Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  \n",
    "    1  2  3  4  5  6            1  2  3  4                     1      1  2  3  4  5  6  \n",
    " 7  8  9 10 11 12 13   5  6  7  8  9 10 11   2  3  4  5  6  7  8   7  8  9 10 11 12 13  \n",
    "14 15 16 17 18 19 20  12 13 14 15 16 17 18   9 10 11 12 13 14 15  14 15 16 17 18 19 20  \n",
    "21 22 23 24 25 26 27  19 20 21 22 23 24 25  16 17 18 19 20 21 22  21 22 23 24 25 26 27  \n",
    "28 29 30              26 27 28 29 30 31     23 24 25 26 27 28 29  28 29 30 31           \n",
    "                                            30                                          \n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Week | Dates | Topic | For Class\n", "-----|---------------|------------|-----------\n", "1 | 9/2, 9/4 | Overview, Introduction to Scheme | For Thursday, read [00 Jupyter Notebooks](Notes/00%20Jupyter%20Notebooks.ipynb) and do [Assignment 00](Assignments/Assignment00.ipynb)\n", "2 | [9/9](Notes/Programming Languages, Sep 09, 2014.ipynb), 9/11 | Scheme Programming Language | Read Chapters 1 and 2 from _The Scheme Programming Language_. Do [Assignment 01](https://docs.google.com/document/d/1pFdcWR2vIveW8KHOee1hYiyoRExUO_1Pe6t99SfzjEs/edit).\n", "3 | [9/16](Notes/Programming Languages, Sep 16, 2014.ipynb), [9/18](Notes/Programming Languages, Sep 18, 2014.ipynb) | Advanced Scheme | Read Chapters 4 and 5 from _The Scheme Programming Language_. Do [Assignment 02](Assignments/Assignment02.ipynb).\n", "4 | 9/23, [9/25](Notes/Programming Languages, Sep 25, 2014.ipynb) | Scheme Exam | [Assignment 03](Assignments/Assignment03.ipynb)\n", "5 | 9/30, 10/2 | Creating our first programming language: calc | [Assignment 04](Assignments/Assignment04.ipynb)\n", "6 | 10/7, 10/9 | Fall break! | no assignments \n", "7 | 10/14, 10/16 | Adding global and local variables | Read [Google Chart in Scheme](Notes/) and do [Assignment 05](Assignments/Assignment05.ipynb)\n", "8 | 10/21, 10/23 | Adding functions, recursion, and the y-combinator | Read [Fibonacci, recursion, and memoization in Scheme](Notes/Fibonacci,%20recursion,%20and%20memoization%20in%20Scheme.ipynb) and do [Assignment 06](Assignments/Assignment06.ipynb)\n", "9 | 10/28, 10/30 | Continuations, and Continuation Passing Style | [Calc without Closures](Notes/Calc%20without%20Closures.ipynb)\n", "10 | 11/4, 11/6 | Midterm | [Review: Continuations and CPS](Notes/Review,%20Continuations%20and%20CPS.ipynb)\n", "11 | 11/11, 11/13 | Tail Calls | [Tail Calls](Notes/Tail%20Calls.ipynb)\n", "12 | 11/18, 11/20 | Streams and infinite data | [Scheme Streams](Notes/Scheme%20Streams.ipynb)\n", "13 | 11/25, 11/27 | Language comparisons | [Hy Lisp](Notes/Hy%20Lisp%20Examples.ipynb) - and video rubric\n", "14 | [12/2](Notes/Hy%20Lisp%20Examples.ipynb), 12/4 | Implementing Scheme in Python | [Scheme in Python](Notes/SchemeInPython.ipynb)\n", "15 | [12/9](Notes/Call%20with%20Current%20Continuation.ipynb), 12/11 | Project Presentations, and Review | [Final Projects Plogs](Programming%20Languages,%20Final%20Projects.ipynb)\n", "\n", "### Videos:\n", "\n", "* https://www.youtube.com/watch?v=2w-iO701g_w - Scheme debugger and inspector\n", "\n", "### Important dates:\n", "\n", "* End of Add/Drop Period (at 4pm) - Wednesday, September 10, 2014\n", "* 5th Course Drop Ends - Friday, September 19, 2014\n", "* CR/NC Deadline for Semester Classes (5pm) - Friday, October 10, 2014\n", "* Fall Break Starts (after last class) - Friday, October 10, 2014, through Sunday, October 19, 2014\n", "* Last Day of Classes- Thursday, December 11, 2014" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Grading" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Final grades will be calculated as a weighted average of all grades according to the following weights:\n", "\n", "* Scheme Exam: 10%\n", "* Midterm Exam: 15%\n", "* Final Exam: 25%\n", "* Labs: 25%\n", "* Project: 25%" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }